package com.bdqn.reflect;

import com.bdqn.reflect.dao.PersonDao;

import java.util.Scanner;

/**
 * 测试2-反射的运用，通过配置切换接口的实现类
 *
 * @author LILIBO
 * @since 2024/6/27
 */
public class Test02DaoImplSwitch {

    private static final Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("请输入实现类名称：");

        // 方式三（重要）：通过类的名称（字符串）获取类的Class对象
        String className = input.next();
        try {
            // 通过外部输入类名称获取Class对象，以便创建对象的实例
            Class clazz = Class.forName(className);
            // 使用接口接收实现类的实例
            PersonDao personDao = (PersonDao) clazz.newInstance();
            personDao.list(); // 通过接口调用方法
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            e.fillInStackTrace();
        }

    }

}
